草庐IT

c++ - Cython、C++ 和 gsl

全部标签

python - Cython C++ 模板

我是cython的新手,我试图包装一个定义为的模板化vector类templatestructVector{}我很难了解cython如何使用模板,尤其是那些以int作为参数的模板。我在文档中读到尚不支持将整数作为模板参数。我该如何正确执行此操作? 最佳答案 对于好奇的人,Cythonwiki展示了如何在Cython中编写模板类:cdefexternfrom""namespace"std":cdefcppclassvector[T]:...此外,多个模板参数被定义为一个列表。要回答OP的问题,可以使用cdefstructVector[

c++ - 双 bool 否定运算符

这个问题在这里已经有了答案:DoubleNegationinC++(14个答案)doublenegationinC:isitguaranteedtoreturn0/1?(2个答案)关闭4年前。我从MicrosoftimplementationofGSL中看到这段代码(C++指南支持库):#ifdefined(__clang__)||defined(__GNUC__)#defineGSL_LIKELY(x)__builtin_expect(!!(x),1)#defineGSL_UNLIKELY(x)__builtin_expect(!!(x),0)#else#defineGSL_LIKE

c++ - 如何在 Cython 中声明指针 vector ?

我想声明这样的东西:cdefvector[Node*]list2node(listmy_list):但是Cython给我这个错误:cdefvector[Node*]list2node(listmy_list):^------------------------------------------------------------mod.pyx:77:20:Expectedanidentifierorliteral 最佳答案 您不需要*--vector[Node]应该为Node指针的vector生成代码。使用Cython0.14.1

c++ - Cython c++ 示例无法识别 c++,为什么?

我正在尝试在theCythonC++page构建“在cython中使用c++”的示例,但安装程序似乎无法识别语言c++。从同一页面获取的文件是:矩形.cpp#include"Rectangle.h"usingnamespaceshapes;Rectangle::Rectangle(intX0,intY0,intX1,intY1){x0=X0;y0=Y0;x1=X1;y1=Y1;}Rectangle::~Rectangle(){}intRectangle::getLength(){return(x1-x0);}intRectangle::getHeight(){return(y1-y0)

python - PyArray_Check 使用 Cython/C++ 给出段错误

谢谢大家。我想知道什么是#include的正确方法所有numpyheader以及使用Cython和C++解析numpy数组的正确方法是什么。下面是尝试://cpp_parser.h#ifndef_FUNC_H_#define_FUNC_H_#include#includevoidparse_ndarray(PyObject*);#endif我知道这可能是错误的,我也尝试了其他选项,但没有一个有效。//cpp_parser.cpp#include"cpp_parser.h"#includeusingnamespacestd;voidparse_ndarray(PyObject*obj){

python - 使用 Cython 时如何将一个 C++ 类(引用)传递给另一个类?

我正在尝试使用Cython包装一个C++模块,以便我可以在Python中使用它。该模块有多个类,其中一些类的方法将对另一个类的对象引用作为参数。假设我有一个名为“foo”和“bar”的C++类,然后用cython将它们包装起来:cdefexternfrom"foobar.hpp"namespace"foobar":cdefcppclassfoo:passcdefcppclassbar:voidkungFoo(foo&f)现在我想制作一个包装类,以便我可以在Python中使用它...cdefclasspyFoo:cdeffoo*thisptrdef__cinit__(self):self

c++ - 我应该返回 gsl::span<const T> 而不是 const std::vector<T>&

我有一个带有std::vector成员的类和一个返回对该vector的const引用的成员函数。classdemo{public://...conststd::vector&test()const{returniv;}private:std::vectoriv;};我计划将成员类型更改为不同的数组,如具有足够功能和较小内存占用的容器类型(例如std::experimental::dynarray、std::unique_ptr)。因此,我认为最好不要将真正的容器作为const引用返回,而是将View作为gsl::span返回给元素。classdemo{public://...gsl::

python - 使用 Cython 包装 C++ 模板以接受任何 numpy 数组

我正在尝试将用C++编写的并行排序包装为模板,以便将其与任何数字类型的numpy数组一起使用。我正在尝试使用Cython来执行此操作。我的问题是我不知道如何将指向numpy数组数据(正确类型)的指针传递给C++模板。我相信我应该为此使用融合数据类型,但我不太明白如何使用。.pyx文件中的代码如下#importingc++templatecdefexternfrom"test.cpp":voidinPlaceParallelSort[T](T*arrayPointer,intarrayLength)defsortNumpyArray(np.ndarraya):#Thisobviously

c++ - GSL 快速傅立叶变换 - 无意义的输出

高斯的傅立叶变换是一个高斯,但出于某种原因,GSL(GNU科学图书馆)的快速傅立叶变换库根本没有给出这个。我已经包括了我用来生成(尝试的)傅立叶变换的代码,以及紧随其后的两个相关图。可以帮助我确定我搞砸了什么吗?#include#include#defineREAL(z,i)((z)[2*(i)])//complexarraysstoredas#defineIMAG(z,i)((z)[2*(i)+1])usingnamespacestd;intmain(){doubleN=pow(2,9);//powerof2forCooley-Tukeyalgorithmintn=(int)N;do

c++ - gsl::multi_span 的用途是什么?

C++核心指南提到跨度,而不是“多跨度”。但是-我看到微软的GSL实现有一个multi_spanclasstemplateclassmulti_span{...};所以,显然这是某种多维版本的gsl::span。但那是什么意思呢?为什么我们需要这个多维跨度,或者更确切地说-我们什么时候使用它?我似乎找不到关于此的任何文档。 最佳答案 简而言之,它是一block连续的内存,代表多维数组。这是一个使用示例:intdata[6]={0,1,2,3,4,5};multi_spanspan{data,6};std::cout从链接源来看,它似